/*
 * @Description:
 * @Author: jingkewei
 * @Date: 2022-06-28
 * @LastEditTime: 2022-06-28
 * @describe: 公共的方法整理
 */

/**
 * @func 使用 array.find()
 * @desc 在数组中查找某一项是否存在
 * @param {Arraay,Value}
 * @return {Object}
 */
export function getAboutValue(arr, value) {
  return arr.find((obj) => obj.name === `${value}`);
}

/**
 * @func 使用 || 清理代码
 * @desc 检测值是否为空，如果是空就返回“0”
 * @param {任意值}
 * @return {value / “0”}
 */
export function getUserRole(role) {
  return role || "0"; // <-- here set default value
}

/**
 * @func
 * @desc 数组扁平化，多维数组变成常规数组
 * @param {多维数组}
 * @return {Array}
 */

export function flat(arr = []) {
  return arr.reduce((t, v) => t.concat(Array.isArray(v) ? flat(v) : v), []);
}

/**
 * @func
 * @desc reduce实现数组的累加
 * @param {Array}
 * @return {}
 */
export function accumulation(arr = []) {
  return arr.reduce((x, y) => x + y, 0);
}

/**
 * @func
 * @desc 统计数组出现的频率,返回的是一个map格式的数据
 * @param {Array}
 * @return {Map}
 */
export function countFrequency(arr) {
  return arr.reduce(function (result, ele) {
    if (result.get(ele) != undefined) {
      result.set(ele, result.get(ele) + 1);
    } else {
      result.set(ele, 1);
    }
    return result;
  }, new Map());
}

/**
 * @func
 * @desc 字符串的处理方法
 * @param {Array}
 * @return {Array Have Objest}
 */

export function getHaveObject(arr) {
  const res = [];
  for (let i = 1; i < arr.length; i += 2) {
    res.push({
      x: arr[i - 1].slice(2),
      y: arr[i].slice(2),
    });
  }
}
/**
 * @func 时间处理函数
 * @desc 格式化时间
 * @param {String}
 * @return {String}
 */
export const formatDate = (dateStr, fmt = "yyyy-MM-dd hh:mm:ss") => {
  if (!dateStr) return "";
  let date = new Date(dateStr);
  let o = {
    "y+": date.getFullYear(),
    "M+": date.getMonth() + 1,
    "d+": date.getDate(),
    "h+": date.getHours(),
    "m+": date.getMinutes(),
    "s+": date.getSeconds(),
  };
  for (let k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      const str = o[k] + "";
      fmt = fmt.replace(RegExp.$1, str.length > 1 ? str : padLeftZero(str));
    }
  }
  return fmt;
};
/**
 * @func 树形结构处理
 * @desc 树形结构修改字段名
 * @param {Array}
 * @return {Array}
 */

export function action(data) {
  if (!data || data.length <= 0) {
    return null;
  }
  return data.map((x) => {
    const model = {
      children: x,
      text: x.name,
      value: x.id,
    };
    const children = action(x.dateTrees);
    if (children) {
      model.children = children;
    }
    return model;
  });
}
/**
 * @func 导出Excel
 * @desc 导出Excel万能方法
 * @param {Array,String}
 * @return {file}
 */
export function exportExcel(file, fileName) {
  const url = window.URL.createObjectURL(
    new Blob([file], { type: "application/vnd.ms-excel" })
  );
  const aDOM = document.createElement("a");
  aDOM.style.display = "none";
  aDOM.href = url;
  const fileName = Date.now() + "." + "xlsx";
  aDOM.setAttribute("download", `${fileName}`);
  document.body.appendChild(aDOM);
  aDOM.click();
  document.body.removeChild(aDOM);
}
/**
 * @func 日期获取季度
 * @desc 日期获取季度
 * @param {String} 2020-09-27
 * @return {String}
 */
export function getQuarter(currMonth) {
  return (currQuarter = Math.floor(
    currMonth.split("-")[1] % 3 == 0
      ? currMonth.split("-")[1] / 3
      : currMonth.split("-")[1] / 3 + 1
  ));
}
